<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<title>git - guia pr&aacute;tico - sem complica&ccedil;&atilde;o!</title>
    <link href='http://fonts.googleapis.com/css?family=Chelsea+Market' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/0/normalize.min.css" type="text/css">
	<link rel="stylesheet" href="css/style.css" type="text/css">
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-652147-13']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

      function recordOutboundLink(link, category, action) {
         _gat._getTrackerByName()._trackEvent(category, action);
         setTimeout('document.location = "' + link.href + '"', 100);
      }
    </script>
</head>
<body>
    <div class="scrollblock block-title">
        <h1>git - guia pr&aacute;tico</h1>
        <p>apenas um guia pr&aacute;tico para come&ccedil;ar com git. sem complica&ccedil;&atilde;o ;)</p>
        <a href="https://twitter.com/share" class="twitter-share-button" data-via="rogerdudler" data-size="large" data-url="http://rogerdudler.github.com/git-guide" data-related="rogerdudler" data-hashtags="git">Tweet</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
        <p class="meta">
            por <a href="http://www.twitter.com/rogerdudler">Roger Dudler</a>
            <br />cr&eacute;ditos para <a href="http://www.twitter.com/tfnico">@tfnico</a>, <a href="http://www.twitter.com/fhd">@fhd</a> and <a href="http://www.namics.com">Namics</a><br />
            guia em
            <a href="index.html">english</a>,
            <a href="index.de.html">deutsch</a>,
            <a href="index.es.html">español</a>,
            <a href="index.fr.html">français</a>,
            <a href="index.id.html">indonesian</a>,
            <a href="index.it.html">italiano</a>,
            <a href="index.nl.html">nederlands</a>,
            <a href="index.pl.html">polski</a>,
            <a href="index.ru.html">русский</a>,
            <a href="index.tr.html">türkçe</a>,
            <br/>
            <a href="index.my.html">မြန်မာ</a>,
            <a href="index.ja.html">日本語</a>,
            <a href="index.zh.html">中文</a>,
            <a href="index.ko.html">한국어</a>
            <br />
            por favor informe problemas em <a href="https://github.com/rogerdudler/git-guide/issues">github</a>
        </p>
        <img src="img/arrow.png" alt="" />
    </div>
    <!-- setup -->
    <a name="setup"></a>
    <div class="scrollblock block-setup">
        <h2>instala&ccedil;&atilde;o</h2>
        <p>
            <a href="http://git-scm.com/download/mac">Baixe o git para OSX</a>
        </p>
        <p>
            <a href="http://msysgit.github.io/">Baixe o git para Windows</a>
        </p>
        <p>
            <a href="http://book.git-scm.com/2_installing_git.html">Baixe o git para Linux</a>
        </p>
    </div>
    <a name="create"></a>
    <div class="scrollblock block-create">
        <h2>criando um novo reposit&oacute;rio</h2>
        <p>
            crie uma nova pasta, abra-a e execute o comando <br />
            <code>git init</code><br />
            para criar um novo reposit&oacute;rio.
        </p>
    </div>
    <a name="checkout"></a>
    <div class="scrollblock block-checkout">
        <h2>obtenha um reposit&oacute;rio</h2>
        <p>
            crie uma c&oacute;pia de trabalho em um reposit&oacute;rio local executando o comando<br />
            <code>git clone /caminho/para/o/reposit&oacute;rio</code><br />
            quando usar um servidor remoto, seu comando ser&aacute;<br />
            <code>git clone usu&aacute;rio@servidor:/caminho/para/o/reposit&oacute;rio</code>
        </p>
    </div>
    <a name="trees"></a>
    <div class="scrollblock block-trees">
        <h2>fluxo de trabalho</h2>
        <p>
            seus reposit&oacute;rios locais consistem em tr&ecirc;s "&aacute;rvores" mantidas pelo git.
            a primeira delas &eacute; sua <code>Working Directory</code> que cont&eacute;m os arquivos vigentes.
            a segunda <code>Index</code> que funciona como uma &aacute;rea tempor&aacute;ria e
            finalmente a <code>HEAD</code> que aponta para o &uacute;ltimo <i>commit</i> (confirma&ccedil;&atilde;o) que voc&ecirc; fez.
        </p>
        <img src="img/trees.png" alt="" />
    </div>
    <a name="add"></a>
    <div class="scrollblock block-add">
        <h2>adicionar &amp; confirmar</h2>
        <p>
            Voc&ecirc; pode propor mudan&ccedil;as (adicion&aacute;-las ao <b>Index</b>) usando<br />
            <code>git add &lt;arquivo&gt;</code><br />
            <code>git add *</code><br />
            Este &eacute; o primeiro passo no fluxo de trabalho b&aacute;sico do git. Para realmente confirmar estas mudan&ccedil;as (isto é, fazer um <i>commit</i>), use<br />
            <code>git commit -m "coment&aacute;rios das altera&ccedil;&otilde;es"</code><br />
            Agora o arquivo &eacute; enviado para o <b>HEAD</b>, mas ainda n&atilde;o para o reposit&oacute;rio remoto.
        </p>
    </div>
    <a name="push"></a>
    <div class="scrollblock block-remote">
        <h2>enviando altera&ccedil;&otilde;es</h2>
        <p>
            Suas altera&ccedil;&otilde;es agora est&atilde;o no <b>HEAD</b> da sua c&oacute;pia de trabalho local. Para enviar estas altera&ccedil;&otilde;es ao seu reposit&oacute;rio remoto, execute <br />
            <code>git push origin master</code><br />
            Altere <i>master</i> para qualquer ramo (<i>branch</i>) desejado, enviando suas altera&ccedil;&otilde;es para ele.
            <br /><br />
            Se voc&ecirc; n&atilde;o clonou um reposit&oacute;rio existente e quer conectar seu reposit&oacute;rio a um servidor remoto, voc&ecirc; deve adicion&aacute;-lo com<br />
            <code>git remote add origin &lt;servidor&gt;</code><br />
            Agora voc&ecirc; &eacute; capaz de enviar suas altera&ccedil;&otilde;es para o servidor remoto selecionado.<br />

        </p>
    </div>
    <a name="branching"></a>
    <div class="scrollblock block-branching">
        <h2>ramificando</h2>
        <p>
            <i>Branches</i> ("ramos") s&atilde;o utilizados para desenvolver funcionalidades isoladas umas das outras. O branch <i>master</i> &eacute; o branch "padr&atilde;o" quando voc&ecirc; cria um reposit&oacute;rio. Use outros branches para desenvolver e mescle-os (<i>merge</i>) ao branch master ap&oacute;s a conclus&atilde;o.
        </p>
        <img src="img/branches.png" alt="" />
        <p>
            crie um novo branch chamado "funcionalidade_x" e selecione-o usando<br />
            <code>git checkout -b funcionalidade_x</code><br />
            retorne para o master usando<br />
            <code>git checkout master</code><br />
            e remova o branch da seguinte forma<br />
            <code>git branch -d funcionalidade_x</code><br />
            um branch <i> n&atilde;o est&aacute; dispon&iacute;vel a outros</i> a menos que voc&ecirc; envie o branch para seu reposit&oacute;rio remoto<br />
            <code>git push origin &lt;funcionalidade_x&gt;</code>
        </p>
    </div>
    <a name="update"></a>
    <div class="scrollblock block-merging">
        <h2>atualizar &amp; mesclar</h2>
        <p>
            para atualizar seu reposit&oacute;rio local com a mais nova vers&atilde;o, execute <br />
            <code>git pull</code><br />
            na sua pasta de trabalho para <i>obter</i> e <i>fazer merge</i> (mesclar) altera&ccedil;&otilde;es remotas.<br />
            para fazer merge de um outro branch ao seu branch ativo (ex. master), use<br />
            <code>git merge &lt;branch&gt;</code><br />
            em ambos os casos o git tenta fazer o merge das altera&ccedil;&otilde;es automaticamente. Infelizmente, isto nem sempre &eacute; poss&iacute;vel e resulta em <i>conflitos</i>.
            Voc&ecirc; &eacute; respons&aacute;vel por fazer o merge estes <i>conflitos</i>
            manualmente editando os arquivos exibidos pelo git. Depois de alterar, voc&ecirc; precisa marc&aacute;-los como merged com<br />
            <code>git add &lt;arquivo&gt;</code><br />
            antes de fazer o merge das altera&ccedil;&otilde;es, voc&ecirc; pode tamb&eacute;m pr&eacute;-visualiz&aacute;-as usando<br />
            <code>git diff &lt;branch origem&gt; &lt;branch destino&gt;</code>
        </p>
    </div>
    <a name="tagging"></a>
    <div class="scrollblock block-tagging">
        <h2>rotulando</h2>
        <p>
            &eacute; recomendado criar r&oacute;tulos para releases de software. Este &eacute; um conhecido conceito, que tamb&eacute;m existe no SVN. Voc&ecirc; pode criar um novo r&oacute;tulo chamado <i>1.0.0</i> executando o comando<br />
            <code>git tag 1.0.0 1b2e1d63ff</code><br />
            o <i>1b2e1d63ff</i> representa os 10 primeiros caracteres do id de commit que voc&ecirc; quer referenciar com seu r&oacute;tulo. Voc&ecirc; pode obter o id de commit com <br />
            <code>git log</code><br />
            voc&ecirc; pode tamb&eacute;m usar menos caracteres do id de commit, ele somente precisa ser &uacute;nico.
        </p>
    </div>
    <a name="checkout-replace"></a>
    <div class="scrollblock block-checkout-replace">
        <h2>sobrescrever altera&ccedil;&otilde;es locais</h2>
        <p>
            No caso de voc&ecirc; ter feito algo errado (que seguramente nunca acontece ;) ) voc&ecirc; pode sobrescrever as altera&ccedil;&otilde;es locais usando o commando<br />
            <code>git checkout -- &lt;arquivo&gt;</code><br />
            isto substitui as altera&ccedil;&otilde;es na sua &aacute;rvore de trabalho com o conte&uacute;do mais recente no HEAD. Altera&ccedil;&otilde;es j&aacute; adicionadas ao index, bem como novos arquivos ser&atilde;o mantidos.
        </p>
        <p>
            Se ao inv&eacute;s disso voc&ecirc; deseja remover todas as altera&ccedil;&otilde;es e commits locais, recupere o hist&oacute;rico mais recente do servidor e aponte para seu branch master local desta forma<br />
            <code>git fetch origin</code><br />
            <code>git reset --hard origin/master</code>
        </p>
    </div>
    <a name="hints"></a>
    <div class="scrollblock block-hints">
        <h2>dicas &uacute;teis</h2>
        <p>
            Interface gr&aacute;fica padr&atilde;o<br />
            <code>gitk</code><br />
            usar sa&iacute;das do git coloridas<br />
            <code>git config color.ui true</code><br />
            exibir log em apenas uma linha por commit<br />
            <code>git config format.pretty oneline</code><br />
            fazer inclus&otilde;es interativas<br />
            <code>git add -i</code>
        </p>
    </div>
    <a name="resources"></a>
    <div class="scrollblock block-resources">
        <h2>recursos & links</h2>
        <h3>clientes gr&aacute;ficos</h3>
        <p>
            <ul>
                <li><a href="http://gitx.laullon.com/">GitX (L) (OSX, c&oacute;digo aberto)</a></li>
                <li><a href="http://www.git-tower.com/">Tower (OSX)</a></li>
                <li><a href="http://www.sourcetreeapp.com/">Source Tree (OSX, gratuito)</a></li>
                <li><a href="http://mac.github.com/">GitHub for Mac (OSX, gratuito)</a></li>
                <li><a href="https://itunes.apple.com/gb/app/gitbox/id403388357?mt=12">GitBox (OSX)</a></li>
            </ul>
        </p>
        <h3>guias</h3>
        <p>
            <ul>
                <li><a href="http://git-scm.com/book/pt-br/">Livro da comunidade Git</a></li>
                <li><a href="http://progit.org/book/">Pro Git</a></li>
                <li><a href="http://think-like-a-git.net/">Pense como um git</a></li>
                <li><a href="http://help.github.com/">Ajuda do GitHub</a></li>
                <li><a href="http://marklodato.github.com/visual-git-guide/index-en.html">Um guia visual do Git</a></li>
            </ul>
        </p>
    </div>
    <div class="announcement">
        <a href="http://frontify.com/?utm_source=gitguide&amp;utm_campaign=founder">
            <img src="http://d13bhd1byokz0o.cloudfront.net/ad/clarify-announcement-git@2x.png" width="960" height="100" alt="Clarify" />
        </a>
    </div>
    <a name="comments"></a>
    <div class="scrollblock block-comments">
        <h2>coment&aacute;rios</h2>
        <div id="disqus_thread"></div>
        <script type="text/javascript">
            /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
            var disqus_shortname = 'git-the-simple-guide'; // required: replace example with your forum shortname

            /* * * DON'T EDIT BELOW THIS LINE * * */
            (function() {
                var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
                dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
                (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
            })();
        </script>
        <noscript>Por favor habilite o JavaScript para ver os <a href="http://disqus.com/?ref_noscript">coment&aacute;rios powered by Disqus.</a></noscript>
    </div>
    <a href="http://www.git-tower.com/?source=rd" onClick="recordOutboundLink(this, 'Outbound Links', 'git-tower.com');return false;" class="tower"></a>
    <a href="files/git_cheat_sheet.pdf" onClick="recordOutboundLink(this, 'Cheat Sheet', 'git-guide');return false;" class="cheatsheet"></a>
</body>
</html>
